package com.hrm.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class TransferRecordExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public TransferRecordExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andTransferRecordIdIsNull() {
            addCriterion("transfer_record_id is null");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdIsNotNull() {
            addCriterion("transfer_record_id is not null");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdEqualTo(Integer value) {
            addCriterion("transfer_record_id =", value, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdNotEqualTo(Integer value) {
            addCriterion("transfer_record_id <>", value, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdGreaterThan(Integer value) {
            addCriterion("transfer_record_id >", value, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("transfer_record_id >=", value, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdLessThan(Integer value) {
            addCriterion("transfer_record_id <", value, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdLessThanOrEqualTo(Integer value) {
            addCriterion("transfer_record_id <=", value, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdIn(List<Integer> values) {
            addCriterion("transfer_record_id in", values, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdNotIn(List<Integer> values) {
            addCriterion("transfer_record_id not in", values, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdBetween(Integer value1, Integer value2) {
            addCriterion("transfer_record_id between", value1, value2, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andTransferRecordIdNotBetween(Integer value1, Integer value2) {
            addCriterion("transfer_record_id not between", value1, value2, "transferRecordId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdIsNull() {
            addCriterion("employee_id is null");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdIsNotNull() {
            addCriterion("employee_id is not null");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdEqualTo(Integer value) {
            addCriterion("employee_id =", value, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdNotEqualTo(Integer value) {
            addCriterion("employee_id <>", value, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdGreaterThan(Integer value) {
            addCriterion("employee_id >", value, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("employee_id >=", value, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdLessThan(Integer value) {
            addCriterion("employee_id <", value, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdLessThanOrEqualTo(Integer value) {
            addCriterion("employee_id <=", value, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdIn(List<Integer> values) {
            addCriterion("employee_id in", values, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdNotIn(List<Integer> values) {
            addCriterion("employee_id not in", values, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdBetween(Integer value1, Integer value2) {
            addCriterion("employee_id between", value1, value2, "employeeId");
            return (Criteria) this;
        }

        public Criteria andEmployeeIdNotBetween(Integer value1, Integer value2) {
            addCriterion("employee_id not between", value1, value2, "employeeId");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentIsNull() {
            addCriterion("old_department is null");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentIsNotNull() {
            addCriterion("old_department is not null");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentEqualTo(String value) {
            addCriterion("old_department =", value, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentNotEqualTo(String value) {
            addCriterion("old_department <>", value, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentGreaterThan(String value) {
            addCriterion("old_department >", value, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentGreaterThanOrEqualTo(String value) {
            addCriterion("old_department >=", value, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentLessThan(String value) {
            addCriterion("old_department <", value, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentLessThanOrEqualTo(String value) {
            addCriterion("old_department <=", value, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentLike(String value) {
            addCriterion("old_department like", value, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentNotLike(String value) {
            addCriterion("old_department not like", value, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentIn(List<String> values) {
            addCriterion("old_department in", values, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentNotIn(List<String> values) {
            addCriterion("old_department not in", values, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentBetween(String value1, String value2) {
            addCriterion("old_department between", value1, value2, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andOldDepartmentNotBetween(String value1, String value2) {
            addCriterion("old_department not between", value1, value2, "oldDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentIsNull() {
            addCriterion("new_department is null");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentIsNotNull() {
            addCriterion("new_department is not null");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentEqualTo(String value) {
            addCriterion("new_department =", value, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentNotEqualTo(String value) {
            addCriterion("new_department <>", value, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentGreaterThan(String value) {
            addCriterion("new_department >", value, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentGreaterThanOrEqualTo(String value) {
            addCriterion("new_department >=", value, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentLessThan(String value) {
            addCriterion("new_department <", value, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentLessThanOrEqualTo(String value) {
            addCriterion("new_department <=", value, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentLike(String value) {
            addCriterion("new_department like", value, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentNotLike(String value) {
            addCriterion("new_department not like", value, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentIn(List<String> values) {
            addCriterion("new_department in", values, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentNotIn(List<String> values) {
            addCriterion("new_department not in", values, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentBetween(String value1, String value2) {
            addCriterion("new_department between", value1, value2, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andNewDepartmentNotBetween(String value1, String value2) {
            addCriterion("new_department not between", value1, value2, "newDepartment");
            return (Criteria) this;
        }

        public Criteria andTransferTimeIsNull() {
            addCriterion("transfer_time is null");
            return (Criteria) this;
        }

        public Criteria andTransferTimeIsNotNull() {
            addCriterion("transfer_time is not null");
            return (Criteria) this;
        }

        public Criteria andTransferTimeEqualTo(Date value) {
            addCriterion("transfer_time =", value, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeNotEqualTo(Date value) {
            addCriterion("transfer_time <>", value, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeGreaterThan(Date value) {
            addCriterion("transfer_time >", value, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("transfer_time >=", value, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeLessThan(Date value) {
            addCriterion("transfer_time <", value, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeLessThanOrEqualTo(Date value) {
            addCriterion("transfer_time <=", value, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeIn(List<Date> values) {
            addCriterion("transfer_time in", values, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeNotIn(List<Date> values) {
            addCriterion("transfer_time not in", values, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeBetween(Date value1, Date value2) {
            addCriterion("transfer_time between", value1, value2, "transferTime");
            return (Criteria) this;
        }

        public Criteria andTransferTimeNotBetween(Date value1, Date value2) {
            addCriterion("transfer_time not between", value1, value2, "transferTime");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}